package tools

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

// 定义全局的db对象
var _db *gorm.DB

// 包初始函数
func init() {

	dsn := "root:nbalone@tcp(114.55.132.50:3306)/translate_test?charset=utf8mb4&parseTime=True&loc=Local"

	var err error
	// 这里不能使用 := 赋值运算符，否则_db会被当成局部变量，导致外部无法访问_db变量
	_db, err = gorm.Open(
		mysql.Open(dsn),
		&gorm.Config{},
	)
	if err != nil {
		panic("连接数据库失败，err = " + err.Error())
	}

	sqlDB, _ := _db.DB()

	// 设置数据库连接池参数
	sqlDB.SetMaxOpenConns(100) // 设置数据库连接池最大连接数
	sqlDB.SetMaxIdleConns(20)  // 连接池最大允许的空闲连接数，sql任务需要执行的连接数小于20，则会关闭超出的连接

}

// 需要执行数据库查询的时候，只要通过tools.GetDB()获取db对象即可

func GetDB() *gorm.DB {
	return _db
}
